242.有效的字母异位词

242.有效的字母异位词

题目

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例 1:

1
2
输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

1
2
输入: s = "rat", t = "car"
输出: false

题解

创建一个大小为 26 的数组,数值初始化都为0,循环输入的字符串s,每出现一个则在对应的字母位置上 +1。循环需要对比的字符串,每出一个则在对应的位置 -1,最后看数组元素是否每一位都是0,如果全都是0则是有效的字母异位词。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
# 创建一个长度为 26 的列表,对应着 26 个字母
data = [0] * 26
s_len = len(s)
t_len = len(t)
# 每出现一个字母, 则在对应字母顺序位置 +1
for x in range(s_len):
data[ord(s[x]) - ord("a")] += 1
# 每出现一个字母,则在对应字母顺序位置 -1
for x in range(t_len):
data[ord(t[x]) - ord("a")] -= 1
# 最后判断数组元素是否都是0
for x in data:
if x != 0:
return False
return True
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func isAnagram(s string, t string) bool {
data := make([]int, 26)
Slen, Tlen := len(s), len(t)

for i := 0; i < Slen; i++ {
// s[i] 获取到的就是 ASCII 值
data[s[i]-'a'] += 1
}

for i := 0; i < Tlen; i++ {
data[t[i]-'a'] -= 1
}

for i := 0; i < len(data); i++ {
if data[i] != 0{
return false
}
}
return true
}

变体

总结

参考